package cn.bdqn.fast.utils;

import java.io.File;
import java.util.UUID;

/**
 * 文件路径加密工具类
 * 1.用户自定义选择文件 -- 原始文件名
 * 2.通过uuid拼接产生新的服务器名 -- uuid_原始文件名
 * 3.将文件分割到不同的文件夹中 -- hash 通过服务器新名字生成对应的文件路径
 * 4.通过服务器名，将存放的文件路径再次解析出来
 * 5.通过服务器（tomcat）部署的位置再次将图片显示在网页中
 */
public class FilePathUtils {

    public static String makeFileName(String filename) {
        return UUID.randomUUID() + "_" + filename;
    }

    public static String makePath(String filename,String saveRootPath) {
        int hashcode = filename.hashCode();
        int dir1 = hashcode&0xf;  //0--15
        int dir2 = (hashcode&0xf0)>>4;  //0-15
        String dir = saveRootPath + "\\" + dir1 + "\\" + dir2 +"\\";  //  upload\2\3  upload\3\5
        File file = new File(dir);
        if(!file.exists()){
            //创建目录
            file.mkdirs();
        }
        return dir;
    }
    /**
     * @Method: findFileSavePathByFileName
     * @Description: 通过文件名和存储上传文件根目录找出要下载的文件的所在路径
     * @param filename 要下载的文件名
     * @param saveRootPath 上传文件保存的根目录，也就是/WEB-INF/upload目录
     * @return 要下载的文件的存储目录
     */
    public static String findFileSavePathByFileName(String filename,String saveRootPath){
        int hashcode = filename.hashCode();
        int dir1 = hashcode&0xf;  //0--15
        int dir2 = (hashcode&0xf0)>>4;  //0-15
        String dir = saveRootPath + "\\" + dir1 + "\\" + dir2 +"\\";  //upload\2\3  upload\3\5
        /* File file = new File(dir);
        if(!file.exists()){
            //创建目录
            file.mkdirs();
        } */
        return dir;
    }



    public void test(){
        System.out.println("UUID:"+ UUID.randomUUID()+"_qq.png");//唯一uuid
        System.out.println(System.currentTimeMillis()+"_qq.png");//当前时间戳
    }
    public void test2(){
        System.out.println("test2");
        System.out.println(Integer.toHexString(123123));
        String name = "abc_qq.png";
        int hashcode = name.hashCode();
        int dir1 = hashcode&0xf; //0-15 通过文件名计算路径
        int dir2 = (hashcode&0xf0)>>4; //0-15 通过文件名计算路径
        System.out.println("路径："+dir1+"\\"+dir2);
    }

}
